package model.tablemodels;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import model.Cliente;
import model.envios.Envio;

public class EnvioTableModel extends AbstractTableModel {

	private List<Envio> listaDeEnvios = new ArrayList<Envio>();

	private String[] columns = { "Numero", "Tipo De Envio", "Fecha Envio",
			"Emisor", "Receptor", "Costo", "Entregado" };

	private Class[] tipos = { Integer.class, Date.class, Cliente.class,
			Cliente.class, Double.class, Boolean.class };

	private static final int COLUMNA_NUMERO = 0;
	private static final int COLUMNA_TIPO = 1;
	private static final int COLUMNA_FECHA = 2;
	private static final int COLUMNA_EMISOR = 3;
	private static final int COLUMNA_RECEPTOR = 4;
	private static final int COLUMNA_COSTO = 5;
	private static final int COLUMNA_ENTREGADO = 6;

	public EnvioTableModel() {
		super();
		listaDeEnvios = new ArrayList<Envio>();
	}

	public EnvioTableModel(List<Envio> listaDeEnvios) {
		super();
		this.listaDeEnvios = listaDeEnvios;
	}

	@Override
	public int getColumnCount() {
		return columns.length;
	}

	@Override
	public int getRowCount() {
		return listaDeEnvios.size();
	}

	@Override
	public Object getValueAt(int fila, int columna) {
		Envio envio = listaDeEnvios.get(fila);

		Object resultado = new Object();
		switch (columna) {
		case COLUMNA_NUMERO:
			resultado = envio.getNumero();
			break;
		case COLUMNA_TIPO:
			resultado = envio.tipoDeEnvio();
			break;
		case COLUMNA_FECHA:
			resultado = envio.getFechaEnvio();
			break;
		case COLUMNA_EMISOR:
			resultado = envio.getEmisor();
			break;
		case COLUMNA_RECEPTOR:
			resultado = envio.getReceptor();
			break;
		case COLUMNA_COSTO:
			resultado = envio.getCosto();
			break;
		case COLUMNA_ENTREGADO:
			resultado = envio.getEntregado();
			break;
		default:
			break;
		}
		return resultado;
	}

}
